package utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Klasa koja predstavlja validator parametara.
 * @author UrosKrkic & Radivoje Popovic
 */
public class ParameterValidator {

	/**
	 * Pattern objekat predstavlja kompajliranu reprezentaciju regularnog izraza
	 */
	private static Pattern pattern;
	
	/**
	 * Matcher interpretira pattern objekat i utvrdjuje ispravnost unesenog stringa
	 */
    private static Matcher matcher;
    
	private static String regex;
	private static String tempInput;
	
	
	public static final String usernameRegExp = "^\\w+([\\.-]?\\w+)*$";
	
	public static final String passwordRegExp = "^[^ \t\r\n]+$";
	
	public static final String nicknameRegExp = "^[^ \t\r\n]+$";
	
	public static final String mailRegExp = "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$";
	
	
	
	/**
	 * Metod uporedjuje ulazni string sa odgovarajucim regularnim izrazom.
	 * Ako string odgovara regularnom izrazu, vracena vrednost je true, inace
	 * false.
	 * @param input - ulazni string koji se proverava
	 * @return true, ako se poklapaju, inace false
	 * @author UrosKrkic & Radivoje Popovic
	 */
	public static boolean matchStrings(String input) {
		return matchStrings(input, 15);
	}
	
	
	/**
	 * Metod uporedjuje ulazni string sa odgovarajucim regularnim izrazom.
	 * Ako string odgovara regularnom izrazu, vracena vrednost je true, inace
	 * false.
	 * @param input - ulazni string koji se proverava
	 * @param length - maksimalna duzina stringa
	 * @return true, ako se poklapaju, inace false
	 * @author UrosKrkic & Radivoje Popovic
	 */
	public static boolean matchStrings(String input, int length) {
		tempInput = input;
		
		if (tempInput.length() > length)
			return false;
		
		pattern = Pattern.compile(regex);
		matcher = pattern.matcher(tempInput);
		if ( !matcher.matches() ) 
			return false;	

		return true;	
	}


	/**
	 * Metod setuje regulrani izraz na regex.
	 * @param regex - string koji predstavlja regularni izraz
	 * @author UrosKrkic & Radivoje Popovic
	 */
	public static void setRegex(String regex) {
		ParameterValidator.regex = regex;
	}

}
